/**Class LocalUser 
 * @author JU Han
**/

/**
 * Question:
 * 	l'attribut comment?
 */

package lo23.model;

import java.util.ArrayList;
import java.util.List;

public class Group {
	/**
	 * Nom du groupe, un idendifiant en plus possible comme event id
	 */
	private String name;
	
	/**
	 * une liste des contacts de ce groupe
	 */
	private List<Contact> contacts;
	
	/**
	 * Un boolean pour dire que si un instance de groupe est supprimable
	 */
	private boolean deletable = true;
	
//	/**
//	 * Commentaire pour ce groupe?
//	 */
//	private String comment;
	
	
	
	/**
	 * Constructeur par defaut, liste des contacts vide
	 * @param _name nom du groupe
	 * @param _d est-ce supprimable
	 */
	public Group(String _name, boolean _deletable) {
		this.name = _name;
		this.contacts = new ArrayList<Contact>();
		this.deletable = _deletable;
	}
	/**
	 * Constructeur pour un groupe non supprimable
	 * @param _name nom du groupe
	 */
	public Group(String _name) {
		this.name = _name;
		this.contacts = new ArrayList<Contact>();
		this.deletable = false;
	}
	
	/**
	 * Constructeur avec initialisation de la liste des contacts
	 * @param _name nom du groupe
	 * @param _cons liste des contacts
	 * @param _deletable est-ce supprimable
	 */
	public Group(String _name, List<Contact> _cons, boolean _deletable) {
		this.name = _name;
		this.contacts = new ArrayList<Contact>();
		this.contacts = _cons;
		this.deletable = _deletable;
	}
	
	
	/**
	 * Getter et Setter pour le nom du group
	 */
	public void setName(String _name) {
		this.name = _name;
	}
	public String getName() {
		return this.name;
	}
	
	/**
	 * Ajouter un contact dans la liste du groupe, sous condition qu'il n'existe pas deja
	 * @param _con le ref d'objet Contact a ajouter
	 */
	public void addContact(Contact _con) {
		if(! this.contacts.contains(_con))
			this.contacts.add(_con);
	}
	/**
	 * Supprimer un contact de la liste du groupe, sous condition qu'il existe dans la liste
	 * @param _con le ref d'objet Contact a supprimer
	 */
	
	public void deleteContact(Contact _con) {
		if(this.contacts.contains(_con))
			this.contacts.remove(_con);
	}
	/**
	 * Getter de la liste des contacts
	 * @return liste des contact du group
	 */
	public List<Contact> getListContact() {
		return this.contacts;
	}
	
	/**
	 * Getter deletable
	 * @return deletable
	 */
	public boolean getDeletable() {
		return this.deletable;
	}
	/**
	 * Setter deletable
	 * @param _deletable si ce groupe est supprimable
	 */
	public void setDeletable(boolean _deletable) {
		this.deletable = _deletable;
	}
}
